﻿using SharpDX;

namespace Engine.Interfaces
{
    public interface ITransformable
    {
        #region Public Properties

        /// <summary>
        /// Sets the Position of the Object.
        /// Must Use the Update() - Method to see an effect.
        /// </summary>
        Vector3 Position
        {
            get;
            set;
        }

        /// <summary>
        /// Sets the rotation of the object. should be between 0-360°.
        /// Must Use the Update() - Method to see an effect.
        /// </summary>
        float Rotation
        {
            get;
            set;
        }

        /// <summary>
        /// Sets the Scale of the Object. 1.0f is the origin.
        /// Must Use the Update() - Method to see an effect.
        /// </summary>
        float Scale
        {
            get;
            set;
        }

        #endregion Public Properties

        #region Public Methods

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        void Transform(Vector3 position, float rotation, float scale);

        /// <summary>
        /// Calculates the new values.
        /// </summary>
        void Update();

        #endregion Public Methods
    }
}